package com.gengzp.mq.server.manager;

import com.gengzp.mq.server.model.message.entity.MqMessage;

import java.util.List;

/**
 * @ClassName MqAckMessageManager
 * @Description 消息ack确认管理器
 * @Author gengzp
 * @Date 2025/9/3 16:54
 */
public interface MqAckMessageManager {

    /**
     * 开启消息确认过期检查任务
     * <p> 当消息被消费者拉取消息后, 需要在消费成功时回传一个消费成功的标识 </p>
     * <p> 如果一个消息超过30秒未收到消费成功的确认信息, 则会进入消费超时处理任务 </p>
     * <p> 超时的消息会有8次自动重发机会, 则将消息加入死信队列 </p>
     */
    void createMessageAckTimeoutInspectJob();

    /**
     * 将消息发送到超时检查队列
     *
     * @param mqMessage 消息
     */
    void sendMessageToAckTimeoutInspectJobQueue(MqMessage mqMessage);

    /**
     * 将消息批量发送到超时检查队列
     *
     * @param mqMessages 消息集合
     */
    void sendMessageToAckTimeoutInspectJobQueue(List<MqMessage> mqMessages);

}
